package com.baomidou.ant.utils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *@description:   字符串工具类
 *@author:        zhoubeibei
 *@email:         2315544970@qq.com
 *@date:          2021/4/6
 *@time:          15:30
 */
public class MyStringUtils {

    //字符数组变数字数组
    public static int[] toInt(String S){
        //逗号分割的数据
        StringTokenizer tokenizer=new StringTokenizer(S,",");
        String[] result=new String[tokenizer.countTokens()];
        int i=0;int k=0;int m=0;
        int[] intArr = new int[1000];
        while (tokenizer.hasMoreTokens()){
            result[i++]=tokenizer.nextToken();
        }
        //得到数字
        for(int j=0;j<result.length;j++){
            intArr[j]=Integer.parseInt(result[j]);
        }
        //intArr有无效长度
        //k用于判断intArr有效长度
        for(int l:intArr){
            if(l!=0){
                k++;
            }else
                m++;
            //当超过有效长度，弹出循环
            if(m>=2)
                break;
        }
        //定义一个结果数组，长度和intArr有效长度一样
        int[] resultArr=new int[k+1];
        //往resultArr赋值
        for(int l=0;l<=intArr.length;l++){
            if(intArr[l]!=0) {
                resultArr[l] = intArr[l];
            }
            //超过有效长度弹出循环
            if(l>=k){
                break;
            }

        }
        //返回结果
        return resultArr;
    }

    //字符串拼接方法
    public static String toString(int id, String s){
        String s1=","+id;
        return s+s1;
    }

    //提取字符串中的数字方法
    public static String pullNumber(String s){
        //正则表达式
        String regEx="[^0-9]";
        Pattern p=Pattern.compile(regEx);
        Matcher m=p.matcher(s);
        return m.replaceAll("").trim();
    }

    //去除字符串中指定字符
    public static String removeStr(String s,String str){
        s=s.replace(str,"");
        return s;
    }


    /**
     * 提取字符串后几位的方法
     * @param str:表述被截取的字符串
     * @param i：表示截几位
     * @return result
     */
    public static String cutStr(String str,Integer i){
        return str.substring(str.length()-i);
    }

    /**
     * 字符串转数字数组
     * @param s 预处理的字符串
     * @return
     */
    public static List<Integer> getNum(String s){
        String[] sList=s.split(",");
        List<Integer> list=new ArrayList<>();
        for (String value : sList) {
            list.add(Integer.valueOf(value));
        }
        return list;
    }

    /**
     * 处理字符串指定字符加1
     * @param s 预处理字符串
     * @param temp 处理的字符位置
     * @return
     */
    public static String addNum(String s,Integer temp){
        String[] numS=s.split(",");
        int[] numI=new int[numS.length];
        for(int i=0;i<numS.length;i++){
            if(i==temp){
                numI[i]= Integer.parseInt(numS[i])+1;
            }else
                numI[i]= Integer.parseInt(numS[i]);
        }
        return numI[0]+","+numI[1];
    }

}
